home *** CD-ROM | disk | FTP | other *** search
/ SGI O2 Out of Box Experience 2.2 / SGI O2 Out of Box Experience 2.2.iso / SysTour / BackButton.java < prev    next >
Text File  |  1998-05-26  |  3KB  |  134 lines

  1. import java.lang.*;
  2. import java.applet.*;
  3. import java.util.*;
  4. import java.awt.*;
  5. import java.awt.image.*;
  6. import java.net.*;
  7.  
  8. public class BackButton extends Applet{
  9.  
  10.   final private byte IDLE      = 0;
  11.   final private byte HIGHLIGHT = 1;
  12.   final private byte PRESSED   = 2;
  13.   final private byte COMMIT    = 3;
  14.  
  15.   private Image idleImage;
  16.   private Image highlightImage;
  17.   private Image pressedImage;
  18.   private AudioClip clickSound;
  19.  
  20.   private String statusMessage = null;
  21.   private String frame         = null;
  22.  
  23.   private byte buttonState = IDLE;
  24.  
  25.   private Stack backStack = new Stack();
  26.  
  27.  
  28.   public void paint(Graphics g){
  29.  
  30.     switch(buttonState){
  31.  
  32.       case IDLE:
  33.         g.drawImage(idleImage,0,0,null);
  34.         break;
  35.  
  36.       case HIGHLIGHT:
  37.         g.drawImage(highlightImage,0,0,null);
  38.         break;
  39.  
  40.       case PRESSED:
  41.         g.drawImage(pressedImage,0,0,null);
  42.         break;
  43.  
  44.       case COMMIT:
  45.         clickSound.play();
  46.         buttonState = HIGHLIGHT;
  47.     repaint();
  48.         break;
  49.     }
  50.  
  51.   }
  52.  
  53.   public void pushURL(URL url){
  54.     backStack.push(url);
  55.     System.err.println(url.toExternalForm());
  56.   }
  57.  
  58.   public boolean mouseUp(Event evt, int x, int y){
  59.     if (buttonState == PRESSED){
  60.       buttonState = COMMIT;
  61.       try {
  62.     backStack.pop(); // (Throw away the current page)
  63.     getAppletContext().showDocument((URL) backStack.pop(),frame);
  64.       } catch (Exception e){ 
  65.     if (e instanceof EmptyStackException){
  66.       showStatus("Cannot backup any further.");
  67.     }
  68.       }
  69.       repaint();
  70.     }
  71.  
  72.     return true;
  73.   }
  74.  
  75.   public boolean mouseDown(Event evt, int x, int y){
  76.     buttonState = PRESSED;
  77.     repaint();
  78.  
  79.     return true;
  80.   }
  81.  
  82.   public boolean mouseEnter(Event evt, int x, int y){
  83.     buttonState = HIGHLIGHT;
  84.  
  85.     if (statusMessage != null){
  86.       showStatus(statusMessage);
  87.     }
  88.  
  89.     repaint();
  90.  
  91.     return true;
  92.   }
  93.  
  94.   public boolean mouseExit(Event evt, int x, int y){
  95.     buttonState = IDLE;
  96.     repaint();
  97.  
  98.     return true;
  99.   }
  100.  
  101.   public void init(){
  102.     String idleImageName      = getParameter("IDLE");
  103.     String highlightImageName = getParameter("HIGHLIGHTED");
  104.     String pressedImageName   = getParameter("PRESSED");
  105.     String clickSoundName     = getParameter("CLICK");
  106.  
  107.     statusMessage = getParameter("DESCRIPTION");
  108.     frame         = getParameter("FRAME");
  109.  
  110.     if (idleImageName != null){
  111.       idleImage = getImage(getDocumentBase(),idleImageName);
  112.       prepareImage(idleImage,this);
  113.     }
  114.  
  115.     if (highlightImageName != null){
  116.       highlightImage = getImage(getDocumentBase(),highlightImageName);
  117.       prepareImage(highlightImage,this);
  118.     }
  119.  
  120.     if (pressedImageName != null){
  121.       pressedImage = getImage(getDocumentBase(),pressedImageName);
  122.       prepareImage(pressedImage,this);
  123.     }
  124.  
  125.     if (clickSoundName != null)
  126.       try {
  127.         clickSound = getAudioClip(new URL(getDocumentBase(),clickSoundName));
  128.       } catch (Exception e) {};
  129.  
  130.     while ((checkImage(idleImage,this) & ImageObserver.ALLBITS) != 0);
  131.     repaint();
  132.   }
  133. }
  134.